package java学习.美团笔试;

/**
 * **************
 * 项目名称: 蓝桥杯 <br/>
 * 文件名称: \ <br/>
 * 文件描述: 这里添加您的类文件描述，说明当前文件要包含的功能。 <br/>
 * 文件创建：刘世锦 <br/>
 * 创建时间: 2022/5/7 <br/>
 *
 * @version v1.0 <br/>
 * @update [序号][日期YYYY-MM-DD][更改人姓名][变更描述]<br/>
 * *************
 */


import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 小团在一个无限长的一维坐标轴上玩一个探险游戏，初始时他位于原点，
 * 并有k点体力。每往正方向走一格（无法往反方向移动）需要消耗一点体力。要求小团在任何时刻体力都不能小于零。
 * 已知坐标轴上有n个坐标上有体力药水，到达这些坐标时，可以恢复一定量的体力。小团想知道，他所能到达的最远坐标是多远？
 * 输入描述
 * 第一行两个正整数k、n，分别表示小团初始有k点体力，以及坐标轴上有n个坐标上有体力药水。
 *
 * 接下来一行n个正整数，第i个数xi表示在xi这个坐标上有体力药水。（xi互不相同）
 *
 * 接下来一行n个正整数，第i个数ti表示在xi这个坐标上的体力药水可以恢复ti点体力。
 *
 * 1<=k <=2000000, 1<=n<=20000,1<=xi<=100000000,1<= ti<=10000
 *
 * 输出描述
 * 一行一个正整数，表示小团所能到达的最远坐标。
 */

//样例输入
//        5 2
//        6 3
//        1 2
//        样例输出
//        8
//        提示
//        样例解释1
//        初始有5点体力，到达坐标3时还剩余2点体力，补充2点，共余4点；
//        到达坐标6时还剩下1点，补充1点，共余2点；
//        耗尽体力时处于坐标8。
public class tili {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        int n = sc.nextInt();
        int a[] = new int[n];
        for (int i = 0; i <n; i++) {
            a[i] = sc.nextInt();
        }
        int b[] = new int[n];
        for (int i = 0; i <n; i++) {
            b[i] = sc.nextInt();
        }
//        Map<Integer, Integer> map = new HashMap<>();
//        for (int i = 0; i < a.length; i++) {
//            map.put(a[i],b[i]);
//        }

        System.out.println(customtili(k, a, b));
    }

    private static int customtili(int k, int[] a, int[] b) {
//        Map<Integer, Integer> map = new HashMap<>();
        int now = 0;
//        5 2
//        6 3
//        1 2
//        初始有5点体力，到达坐标3时还剩余2点体力，补充2点，共余4点；
//        到达坐标6时还剩下1点，补充1点，共余2点；
//        耗尽体力时处于坐标8。
        for (int i = 0; i < a.length; i++) {
                if (a[i]-now <=k){ // 能走到
                    k = k-(a[i]-now);
                    k = k+b[i];
                    now = a[i];

                }
        }
        if (k>0){
            now = now+k;
        }
      return now;
    }


}
